package com.huike.report.mapper;

import java.util.HashMap;
import java.util.List;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.LongAccumulator;

import org.apache.ibatis.annotations.Mapper;
import com.huike.report.domain.vo.TopSelectVo;
import com.huike.clues.domain.TbActivity;
import com.huike.clues.domain.TbClue;
import com.huike.common.core.domain.entity.SysDept;
import com.huike.contract.domain.TbContract;
import com.huike.report.domain.vo.LineSeriesVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import org.apache.ibatis.annotations.Select;
import com.huike.clues.domain.vo.IndexStatisticsVo;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Service;

/**
 * 首页统计分析的Mapper
 * @author Administrator
 *
 */
@Mapper
public interface ReportMapper {
    /**=========================================基本数据========================================*/
    /**=========================================今日简报========================================*/
    Integer countCluesByMap(Map map);
    /**=========================================渠道统计饼图========================================*/
    List<Map<String, Object>> chanelStatistics(@Param("begin") LocalDateTime beginTime, @Param("end") LocalDateTime endTime);
    /**=========================================活动统计饼图========================================*/
    List<Map<String, Object>> activityStatistics(@Param("begin")LocalDateTime beginTime, @Param("end")LocalDateTime endTime);
    /**=========================================活动详情查询========================================*/
    List<TbActivity> activityStatisticsList(TbActivity tbActivity);
    /**=========================================线索查询========================================*/
    Map<String, Object> clueStatistics(TbClue tbClue);
    /**=========================================费用查询========================================*/
    Map<String, Object> contractStatistics(TbContract tbContract);
    /**=========================================销售查询========================================*/
    Double salesStatistics(HashMap hashMap);
    /**=========================================销售统计报表========================================*/
    List<Map<String, Object>> deptStatisticsList(@Param("begin") LocalDateTime beginTime, @Param("end") LocalDateTime endTime);
    @Select("select dept_name from sys_dept where dept_id =#{deptId}")
    SysDept selectDeptById(Long deptId);
    /**=========================================销售报表归属人表========================================*/
    List<Map<String, Object>> ownerShipStatisticsList(@Param("begin") LocalDateTime beginTime, @Param("end") LocalDateTime endTime);
    /**=========================================销售统计报表--归属渠道========================================*/
    List<Map<String, Object>> channelStatisticsList(@Param("begin") LocalDateTime beginTime, @Param("end") LocalDateTime endTime);

    /**=========================================基本数据========================================*/



	/**=========================================今日简报========================================*/

    Integer countBusinessByMap(Map map);

    Integer countContractNumByMap(Map map);

    Double sumSalesAmountByMap(Map map);

	/**=========================================待办========================================*/
    @Select("select count(*) from tb_clue_track_record tctr where tctr.clue_id not in (select id from tb_clue)")
    Integer countFollowedClues();

    @Select("select count(*) from tb_business_track_record tbtr where tbtr.id not in (select id from tb_business)")
    Integer countFollowedBusinese();

    @Select("select count(*) from tb_assign_record where assign_id not in" +
            "(select tb_clue.id from tb_clue) and type = 0")
    Integer countAllocatedClues();

    @Select("select count(*) from tb_assign_record where assign_id not in" +
            "(select tb_business.id from tb_business) and type = 1")
    Integer countAllocatedBusiness();

    /**
     *  线索转化龙虎榜
     * @param map
     * @return
     */
    List<TopSelectVo> selectSalesStatistic(HashMap map);

    List<TopSelectVo> selectBusinessChangeStatistics(HashMap map);
}
